#ifndef __SCNS_SD_H__
#define __SCNS_SD_H__

#include "ScnsConfig.h"

#if defined(SCNS_SD_ENABLE)&&SCNS_SD_ENABLE==1

#include "ScnsYing.h"
#include "ScnsBspSd.h"

typedef enum
{
    SCNS_SD_TYPE_ERR=0X00,
    SCNS_SD_TYPE_MMC=0X01,
    SCNS_SD_TYPE_V1=0X02,
    SCNS_SD_TYPE_V2=0X04,
    SCNS_SD_TYPE_V2HC=0X06,
}scnsSdType;

extern ScnsStatus scnsSdPlugIn(ScnsSdEnum sdN);
extern ScnsStatus scnsSdInit(ScnsSdEnum sdN);
extern ScnsStatus scnsSdHandShake(ScnsSdEnum sdN);
extern ScnsStatus scnsSdInited(ScnsSdEnum sdN);

extern ScnsStatus scnsSdRead(ScnsSdEnum sdN,uint8*buf,uint32 sector,uint8 cnt);
extern ScnsStatus scnsSdWrite(ScnsSdEnum sdN,const uint8*buf,uint32 sector,uint8 cnt,uint32 tryTime,void (*callback)(ScnsSdEnum sdN,ScnsStatus status));

extern void scnsSdWriteFastAsyncCallback(ScnsSdEnum sdN);
extern void scnsSdWriteAsync(ScnsSdEnum sdN,const uint8*buf,uint32 sector,uint8 cnt,uint32 tryTime,void (*callback)(ScnsSdEnum sdN,ScnsStatus status));
extern void scnsSdWriteAsyncWait(ScnsSdEnum sdN);
#if defined(SCNS_SD_FATFS_DIR)

#include "ff.h"
#include "diskio.h"

extern DRESULT scnsSdIoctl(ScnsSdEnum sdN,BYTE cmd,void*buff);
#endif
#endif
#endif
